Systems and methods for using a social networking system to purchase products

ABSTRACT

Embodiments of the present invention relate generally to marketing products through a social networking system. More specifically, one or more embodiments of the present invention relate to allowing social networking users to purchase products through the social networking system and to add products to shopping carts associated with third-party merchants.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority to and the benefit of U.S. ProvisionalPatent App. No. 61/887,306 filed Oct. 4, 2013, the entirety of which ishereby incorporated by reference. This application also relates to U.S.application Ser. No. 14/037,357 titled “Dynamically Providing aThird-Party Checkout Option,” filed Sep. 25, 2013, the entirety of whichis hereby incorporated by reference.

BACKGROUND OF THE INVENTION

1. The Field of the Invention

Embodiments of the present invention relate generally to marketingthrough a social networking system. More specifically, one or moreembodiments of the present invention relate to allowing socialnetworking users to purchase products through the social networkingsystem or to add products to shopping carts of third-party merchants.

2. Background and Relevant Art

An increasing amount of commerce is originating from social networkingactivity. For example, social networking systems (such as, for example,the social networking system provided by Facebook, Inc.(™)) areproviding a valuable platform through which merchants can market theirproducts (e.g., goods and services), as well as promote their physical(e.g., brick and mortar) and virtual (e.g., websites and mobileapplications) retail. Social networking systems provide value tomerchants in a number of ways. For example, social networking systemscan facilitate a viral spread commerce activity among users, therebyincreasing market presence of a product without direct action by amerchant providing the product. Furthermore, users of social networkingsystems provide user-specific information to the social networkingsystem that can be used to provide highly-tailored advertisements andother marketing content to the users, thereby increasing purchaseconversion percentages for merchants and increasing the effectiveness ofmarketing activities.

Despite the many advantages of using social networking systems forcommerce, marketing products through social networking systems stillsuffers from one or more disadvantages. Primarily, users of a socialnetworking system that are interested in purchasing or investigating aproduct made known to them through a social networking system, aretypically required to shift their focus away from the social networkingsystem or a corresponding application (e.g., a mobile social networkingapplication or a web-based social networking application) in order toobtain additional information regarding the product or to purchase theproduct. For example, a user viewing a product advertisement providedthrough a social networking system (e.g., within the user's socialnetworking news feed), may be required to shift their focus to aseparate website or application in order to learn more about theadvertised product or initiate a purchase of the product. This can bedisruptive to the user's experience on the social networking system andmay discourage the user from taking any action with respect to theadvertised product. Furthermore, if a user is interested in the product,but does not want to immediately shift focus away from the socialnetworking system, the user's interest in the product may fade or theuser may forget about the product entirely before the user takes anyaction with respect to the product.

These and other disadvantages may exist with respect to commercefacilitated by way of a social networking system or service.

BRIEF SUMMARY OF THE INVENTION

Embodiments of the present invention provide benefits and/or solve oneor more of the foregoing or other problems in the art with methods andsystems for commerce activities associated with social network systems.In particular, the methods and systems disclosed herein allow a user ofa social networking system to perform one or more commerce activities(e.g., add a product to a virtual shopping cart or purchase a product)without disrupting the user's social networking experience.

In some embodiments, a social networking system server or application(e.g., a native social networking application of a user device) causes aproduct to be added to a third party merchant's shopping cart.Information regarding a product available through a third-party merchantis associated with a product node within the social networking system. Acommunication (e.g., an advertisement or other post), including theinformation regarding the product, is provided to a user of the socialnetworking system (e.g., by way of a native or web-based socialnetworking application). It may be that the product is tagged in thecommunication. A selectable option (e.g., a user-interface control) toadd the product to a shopping cart associated with a third-partymerchant is provided in conjunction with the communication. If the userchooses the selectable option, a request to add the product to theuser's virtual shopping cart is sent to the third-party merchant withoutredirecting the user away from the social networking system.Accordingly, a user can add a product to the user's shopping cart for aseparate third-party merchant (e.g., for later purchase) withoutshifting focus away from the social networking system.

In other embodiments, a social networking system server may facilitatepurchase of a product by a user directly through the social networkingsystem. Information regarding a product available through a socialnetworking system is associated with a product node within the socialnetworking system. A communication (e.g., an advertisement or otherpost), including the information regarding the product, is provided to auser of the social networking system (e.g., by way of a native orweb-based social networking application). It may be that the product istagged in the communication. A selectable option (e.g., a user-interfacecontrol) to purchase the product directly through the social networkingsystem is provided in conjunction with the communication. If the userchooses the selectable option, the social networking system initiatesthe purchase of the product without redirecting the user to a separatecommerce application or system. Accordingly, a user can purchase aproduct from a social networking system without shifting focus away fromthe social networking system.

The one or more embodiments disclosed herein help improve a user'ssocial networking experience while still facilitating one or morecommerce activities of the user. In particular, products can bepurchased and/or saved for purchase at a later time without a userhaving to shift focus from a social networking system over to a commerceapplication of a third-party merchant.

Additional features and advantages of exemplary embodiments of thepresent invention will be set forth in the description which follows,and in part will be obvious from the description, or may be learned bythe practice of such exemplary embodiments. The features and advantagesof such embodiments may be realized and obtained by means of theinstruments and combinations particularly pointed out in the appendedclaims. These and other features will become more fully apparent fromthe following description and appended claims, or may be learned by thepractice of such exemplary embodiments as set forth hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above recited and otheradvantages and features of the invention can be obtained, a moreparticular description of the invention briefly described above will berendered by reference to specific embodiments thereof that areillustrated in the appended drawings. It should be noted that thefigures are not drawn to scale, and that elements of similar structureor function are generally represented by like reference numerals forillustrative purposes throughout the figures. In the following drawings,bracketed text and blocks with dashed borders (e.g., large dashes, smalldashes, dot-dash, dots) are used herein to illustrate optional featuresor operations that add additional features to embodiments of theinvention. Such notation, however, should not be taken to mean thatthese are the only options or optional operations, and/or that blockswith solid borders are not optional in certain embodiments of theinvention. Understanding that these drawings depict only typicalembodiments of the invention and are not therefore to be considered tobe limiting of its scope, the invention will be described and explainedwith additional specificity and detail through the use of theaccompanying drawings in which:

FIG. 1 illustrates a schematic diagram of a system in accordance withprinciples described herein;

FIG. 2 illustrates a schematic diagram of one example implementation ofthe system of FIG. 1 in accordance with principles described herein;

FIG. 3 illustrates a flowchart of a series of acts in a method of addinga product to a third-party merchant shopping cart in accordance withprinciples described herein;

FIG. 4 illustrates a schematic diagram of another example implementationof the system of FIG. 1 in accordance with principles described herein;

FIG. 5 illustrates a flowchart of a series of acts in another method ofadding a product to a third-party merchant shopping cart in accordancewith principles described herein;

FIG. 6 illustrates a schematic diagram regarding relationships within asocial networking system in accordance with principles described herein;

FIG. 7 illustrates a schematic diagram of an example product node inaccordance with principles described herein;

FIG. 8 illustrates an example graphical user interface includinginformation and content from a product node in accordance withprinciples described herein;

FIGS. 9A-9B include graphical user interfaces illustrating an examplecomposition of a social networking communication in accordance withprinciples described herein;

FIGS. 10A-10B include graphical user interfaces illustratinginteractions, within an example mobile social networking news feed, withthe composed social networking communication of FIGS. 9A-9B inaccordance with principles described herein;

FIG. 11 illustrates a flowchart of a series of acts in a method ofpurchasing a product from a social networking feed in accordance withprinciples described herein;

FIG. 12 includes a graphical user interface illustrating an examplesocial networking feed in accordance with principles described herein;

FIGS. 13A-13D include graphical user interfaces illustrating variousexample interactions with a communication from the social networkingfeed of FIG. 12 in accordance with principles described herein;

FIG. 14 illustrates a block diagram of an exemplary computing device inaccordance with principles described herein; and

FIG. 15 is an example network environment of a social networking systemin accordance in accordance with principles described herein.

DETAILED DESCRIPTION

One or more embodiments of the present invention help improve userexperience and sales conversions related to commerce activities on asocial networking system. In particular, methods and systems disclosedherein allow a user of a social networking system to perform one or morecommerce activities without having to shift focus from a socialnetworking system over to a commerce application (e.g., a mobileapplication or web application) of a third-party merchant.

In some embodiments, a social networking system server or application(e.g., a native social networking application of a user device) causes aproduct to be added to a third-party merchant's shopping cart.Information regarding a product available through a third-party merchantis associated with a product node within the social networking system. Acommunication (e.g., an advertisement or other post), including theinformation regarding the product, is provided to a user of the socialnetworking system (e.g., by way of a native or web-based socialnetworking application). It may be that the product is tagged in thecommunication. A selectable option (e.g., a user-interface control) toadd the product to a shopping cart associated with a third-partymerchant is provided in conjunction with the communication. If the userchooses the selectable option, a request to add the product to theuser's virtual shopping cart is sent to the third-party merchant withoutredirecting the user away from the social networking system.Accordingly, a user can add a product to the user's shopping cart for aseparate third-party merchant (e.g., for later purchase) withoutshifting focus away from the social networking system.

In other embodiments, a social networking system server may facilitatepurchase of a product by a user directly through the social networkingsystem. Information regarding a product available through a socialnetworking system is associated with a product node within the socialnetworking system. A communication (e.g., an advertisement or otherpost), including the information regarding the product, is provided to auser of the social networking system (e.g., by way of a native orweb-based social networking application). It may be that the product istagged in the communication. A selectable option (e.g., a user-interfacecontrol) to purchase the product directly through the social networkingsystem is provided in conjunction with the communication. If the userchooses the selectable option, the social networking system initiatesthe purchase of the product without redirecting the user to a separatecommerce application or system. Accordingly, a user can purchase aproduct from a social networking system without shifting focus away fromthe social networking system.

The one or more embodiments disclosed herein help improve a user'ssocial networking experience while still facilitating one or morecommerce activities of the user. In particular, products can bepurchased and/or saved for purchase at a later time without a userhaving to shift focus from a social networking system over to a commerceapplication of a third-party merchant.

As used herein, the term “commerce activity” may refer to any activityby a user or a third-party merchant relating to marketing, promotion,and/or purchase of one or more products (e.g., goods or services). Forexample, commerce activities can include purchasing a product, adding aproduct to a virtual shopping cart, recommending a product, or offeringa product for sale.

As used herein, the term “networking application” may refer to anyapplication (e.g., a native application or a web-based application) thatprovides one or more networking services to users of the networkingapplication. For example, a networking application may be a socialnetworking application provided or facilitated by a social networkingsystem, and configured to provide one or more social networking servicesto its users. Examples of networking applications include, but are notlimited to, web-based and mobile applications provided by Facebook(™).

As used herein, the term “commerce application” may refer to anyapplication (e.g., a native application or a web-based application)associated with a merchant of products (e.g., goods or services) andconfigured to allow users of the commerce application to purchase one ormore products from the merchant. Examples of commerce applicationsinclude, but are not limited to, ecommerce websites and mobileapplications.

As used herein, the term “third-party merchant” may refer to anymerchant of goods and services that is separate and independent of asocial networking system. For example, a third-party merchant mayprovide one or more products through an ecommerce website that isindependent of a social networking website provided by a socialnetworking system. Examples of third-party merchants include, but arenot limited to, merchants providing a specific category of product(e.g., GAP (™)), merchants providing a broad variety of products (e.g.,Amazon (™)), merchants having physical as well as virtual stores (e.g.,Sears (™)), and merchants having only virtual stores (e.g., eBay (™)).

As will be described in more detail below, users of a social networkingapplication may also be users of separate commerce applications. Forexample, a user may have a user account on a social networking systemand a user account on an ecommerce system. In some embodiments, a socialnetworking system can utilize information regarding a user's accountwith an ecommerce system to provide one or more of the benefits andadvantages described herein. Additionally or alternatively, a socialnetworking system can work together with one or more ecommerce systemsto provide the beneficial services described herein.

FIG. 1 is a schematic diagram illustrating a system 100 in accordancewith one or more embodiments of the present invention. An overview ofthe system 100 will be described in relation to FIG. 1. Thereafter, amore detailed description of the implementations, components, andprocesses of the system 100 will be described in relation to otherfigures, including FIGS. 2-13D.

As illustrated by FIG. 1, the system 100 can include a networkingapplication 101 (e.g., a social networking application) and a commerceapplication 111 (e.g., an ecommerce application provided by athird-party merchant) that can work together to provide one or morefeatures discussed herein. Networking application 101 can include aserver side networking application component 102 and a device sidenetworking application component 103. Server side networking applicationcomponent 102 and device side networking application component 103 caninteroperate to provide an intended functionality, such as, for example,a social networking functionality. In some embodiments, server sidenetworking application component 102 is a Web server and device sidenetworking application component 103 is a Web browser. In otherembodiments, server side networking application component 102 and deviceside networking application component 103 are different components of adistributed application. Device side networking application component103 can be an “app” that runs on a computing device, such as, forexample, a personal computing device or a mobile device (e.g., asmartphone or a tablet computer).

Similarly, commerce application 111 includes a server side commerceapplication component 112 and a device side commerce applicationcomponent 113. Server side commerce application component 112 and deviceside commerce application component 113 can interoperate to provide anintended functionality, such as, for example, electronic commercefunctionality. In some embodiments, server side commerce applicationcomponent 112 is a Web server and device side commerce applicationcomponent 113 is a Web browser. In other embodiments, server sidecommerce application component 112 and device side commerce applicationcomponent 113 are different components of a distributed application.Device side commerce application component 113 can also be an “app” thatruns on a computing device, such as, for example, a personal computingdevice or a mobile device (e.g., a smartphone or a tablet computer).Commerce application 111 can be associated and/or provided by a thirdparty, such as a third-party merchant. Further, commerce application 111can facilitate one or more commerce transactions by a user. For example,user 122 can use commerce application to shop for and purchase one ormore products. Furthermore, commerce application 111 can enable avirtual shopping cart unique to user 122, and into which user 122 canvirtually add one or more products for later purchase. As will bedisclosed in further detail herein, user 122 can use networkingapplication 102 to add one or more products to a virtual shopping cartmaintained by commerce application 111 without shifting focus away fromnetworking application 101 to commerce application 111.

Device side application components corresponding to multiple differentserver application components can be installed or loaded on the samecomputing device. As depicted, device side networking applicationcomponent 103 and device side commerce application component 113 canboth be installed on a computing device 121. For example, a socialnetwork system “app” and an electronic commerce “app” can both beinstalled on computing device 121. Computing device 121 can beassociated with a user 122 and may include any suitable computingdevice, such as a mobile device or a personal computing device.

Networking application 101 may manage or maintain information related toone or more products that can be made available to users, such as user122. In some embodiments, networking application 101 can receive productdata 116 from commerce application 111, the product data 116 beingrepresentative of product information for one or more products availableon commerce application 111. Alternatively, networking application 101can independently obtain and maintain product data 116. For example,networking application 101 can electronically survey and/or viewproducts available through commerce application 111 to build a databaseof product data 116 that is updated at predetermined intervals. Productdata 116 can include data for products that are being offered for salethrough commerce application 111 (and can be products from one or moredifferent merchants). As will be described in greater detail below,product data 116 can be included in or be associated with a node withina social networking system.

Networking application 101 can present product data 116 to users, suchas, for example, user 122. In some embodiments, product data 116 ispresented to users of a social networking system by way of a user'ssocial networking activity feeds (e.g., news feeds). In additionalembodiments, networking application 101 can comprise an ecommerceapplication (e.g., an ecommerce website) that presents the product data116 to a user within a initial display of networking application 101(e.g., a landing page of a website), or within a display of searchresults (e.g., within a list of type-ahead search results or within afull page of results responsive to a completed search). In general,product data 116 presented to a particular user can be customized basedon user information available to the networking application 101.Additionally or alternatively, product presentation can be based on anyof: user's product interests, product interests of other users (e.g.,friends), tagging by a user, tagging by a merchant, advertisements, etc.

Users can perform various electronic commerce activities with respect toproducts presented to them by networking application 101. For example,users can add a product to a third-party merchant's shopping cart or buya product directly through networking application 101. A commerceactivity performed by a user can cause networking application 101 tosend a request, such as, for example, commerce related request 117, tocommerce application 111. For example, commerce related request 117 canbe a request to add a product to user 122's shopping cart associatedwith commerce application 111, a request by user 122 to purchase aproduct offered by way of commerce application 111, a request forfulfillment of a product purchase, etc. Alternatively, networkingapplication 101 can facilitate direct purchase of a product throughnetworking application 101 without the need to send commerce relatedrequest 117 to commerce application 111.

FIG. 2 illustrates a schematic diagram illustrating a system 200 inaccordance with an embodiment of the present invention. System 200illustrates one example embodiment of system 100. In particular, FIG. 2illustrates a networking application 202 and various commerceapplications 212A-212C. As depicted in FIG. 2, computing device users(e.g., 223 and 233) can use user networking applications (e.g., 222 and232 respectively) at computing devices (e.g., 221 and 231 respectively)to access networking application 202. In embodiments where networkingapplication 202 and/or commerce application 212A is a web application,user networking applications 222 and 232 can be web browsers or otheruser commerce applications.

System 200 includes a set of one or more server computing devices 201that provide networking application 202 including a news feed generator208 and a third-party merchant module 209. In one or more embodiments ofthe invention, networking application 202 comprises a social-networkingsystem 203 (such as but not limited to FACEBOOK (™)), but in otherembodiments the networking application 202 may comprise another type ofapplication, including but not limited to an e-mail application, searchengine application, banking application, or any number of otherapplication types that utilize user accounts.

In one or more embodiments where the networking application 202comprises a social networking system 203, the networking application 202may include a social graph module 204 for representing and analyzing aplurality of users, products, and other concepts. A node storage module206 of the social graph module 204 can store node information comprisingnodes for users, nodes for products, nodes for concepts, nodes foritems, or any other suitable nodes within social networking system 203.An edge storage module 207 of the social graph module 204 can store edgeinformation comprising relationships between nodes and/or actionsoccurring within the social networking system 203. Further detailregarding social-networking systems, social graphs, edges, and nodes ispresented below with respect to FIG. 15.

In such embodiments where networking application 202 is a webapplication, the server computing devices 201 may include a webapplication server (including but not limited to the Apache HTTP Serverby the Apache Software Foundation, Internet Information Services (IIS)by Microsoft Corporation, nginx by NGINX, Inc., the open-source lighttpdweb server, and Google Web Server (GWS) by Google Inc.) and optionally arelational or non-relational database (including but not limited toMySQL by Oracle Corporation, PostgreSQL by the PostgreSQL GlobalDevelopment Group, Apache Cassandra by the Apache Software Foundation,HBase by the Apache Software Foundation, and MongoDB by 10 gen) forstoring social graph data.

System 200 also includes a set of one or more server computing devices211 that provide a plurality of commerce applications, includingcommerce applications 212A-212C. Each commerce application 212A-212C cancorrespond to one or more third-party merchants that offer products forsale through electronic commerce avenues. Although FIG. 2 shows commerceapplications 212A-212C together, one will appreciate that each ofcommerce applications 212A-212C may be independent of each other and maybe associated with an independent third-party merchant. Each commerceapplication 212A-212C can also include one or more of a checkout module,a cart module, a product database, and a user database. For example,commerce application 212A includes checkout module 213, cart module 214,product database 217, and user database 218.

Generally, checkout module 213 interoperates with a payment network tosettle transactions for purchased products. Cart module 214 isconfigured to accumulate and maintain status for one or more products auser has (at least initially) added to a virtual shopping cart. Checkoutmodule 213 can be used to settle transactions for products placed in auser's cart module 214 and then subsequently purchased. Product database217 stores product data for any products offered for sale by athird-party merchant through commerce application 212A. User database218 stores user specific information (e.g., login, password, account,address, or payment information) for users of commerce application 212A.In some embodiments, user accounts within product database 218 may beassociated with users of networking application 202. For example, a useraccount for commerce application 212A may be linked in some way to auser profile from networking application 202.

In such embodiments where the commerce application 212A is a webapplication, the server computing devices 211 may include a webapplication server (including but not limited to the Apache HTTP Serverby the Apache Software Foundation, Internet Information Services (IIS)by Microsoft Corporation, nginx by NGINX, Inc., the open-source lighttpdweb server, and Google Web Server (GWS) by Google Inc.) and optionally arelational or non-relational database (including but not limited toMySQL by Oracle Corporation, PostgreSQL by the PostgreSQL GlobalDevelopment Group, Apache Cassandra by the Apache Software Foundation,HBase by the Apache Software Foundation, and MongoDB by 10 gen) forstoring product database 217 and user database 218.

In some embodiments, a user uses more than one computing device or usesdifferent computing devices to access networking application 202 and/orcommerce application 212A. For example, user 233 may use one or theother, or both, of computing device 231 (e.g., a mobile phone) andcomputing device 261 (e.g., a desktop PC) to access networkingapplication 202 and/or commerce application 212A.

FIG. 3 illustrates a flowchart of an example method 300 in accordancewith an embodiment of the present invention. Method 300 will bedescribed with respect to the components and data of system 200.

Method 300 includes associating, using at least one processor,information regarding a product available through a third-party merchantwith a product node within a social networking system (301). Forexample, and referring again to FIG. 2, social graph module 204 canassociate information regarding a product 241A in a product node withinsocial networking system 203.

In some embodiments, server computing device(s) 211 can send productdata 241 to networking application 202. Product data 241 can includedata for products, such as, product 241A, being offered for sale bythird-party merchants through one or more of commerce applications212A-212C. Social graph module 204 can process product data 241 tocreate or update product nodes for products included in product data241. Product nodes can be stored, updated, and managed by node storagemodule 206. Social graph module 204 can also create edges betweenproduct nodes and other nodes in a social network graph. Edges forproducts nodes and other nodes can be stored by end storage module 207.Additionally or alternatively, networking application 202 can manageproduct information in any other suitable manner.

As shown in FIG. 3, method 300 includes providing a communication,including the information regarding the product, to a user of the socialnetworking system (302). Method 300 further includes providing, inconjunction with the provided communication, a selectable option to addthe product to a shopping cart associated with the third-party merchant(303). For example, and referring again to FIG. 2, news feed generator208 can send a communication 244 (e.g., a post or advertisement)comprising information for product 241A and a control 246 (e.g., aselectable UI control element), to computing device 231. Communication244 can be sent to computing device 231 based on an interest of user 233in product 241A or based on a connection between user 233 and anoriginator (e.g., another user or a merchant) of a communication (e.g.,post or advertisement) comprising the information associated withproduct 241A. For example, news feed generator 208 can send thecommunication 244 based on the fact that user 233 may have an accountwith commerce application 212A.

User networking application 232 can present information regardingproduct 241A along with a control 246 in a user-interface at computingdevice 231. Control 246 can be a user-interface control, such as, forexample, an “Add To Cart” button, that when selected, adds product 241Ato user 233's cart within commerce application 212A. Product 241A can beadded to user 233's cart automatically and without further userintervention. Advantageously, user 233 maintains focus on the news feedfrom news feed generator 208, while also being able to add product 241Ato their cart within commerce application 212A. In some examples,control 246 may be selectively enabled based on whether or not user 233has a user account with commerce application 212A. For example,networking application 202 may enable control 246 after authenticatingthe user's account with commerce application 212A (e.g., via a loginprocess, either directly through commerce application or by leveragingsocial networking system 203 to login to the commerce application 212A).Otherwise, networking application 202 may provide information regardingproduct 241A to user 233 without enabling control 246.

Furthermore, if the user 233 does not have an account with commerceapplication 212A, networking application 202 may set up a temporary cartto store information associated with user 233's ecommerce activitieswithin networking application 202. In particular, networking application202 can create a temporary data object including data representative ofany products that user 233 has requested to be added to a cart forcommerce application 212A. This information can include specificsregarding the products themselves, any variables associated with theproducts (e.g., size, color, and quantity), and/or correspondingmerchant information (e.g., identifying commerce application 212A).Networking application 202 can then send an indication to commerceapplication 212A that networking application 202 has created a temporaryshopping cart for commerce application. Networking application 202 canalso provide commerce application 212A with identification informationspecific to user 233 (e.g., name, username, address, ID number, IPaddress). Networking application 202 can push the temporary cartinformation to commerce application 212A or can make it available forsubsequent access by commerce application 212A. This process can eitheroccur on the backend (e.g., directly between server computing device 201and server computing devices 211) or by way of computing device 231(e.g., networking application 202 can cause computing device 231 tostore the temporary cart within a cookie for subsequent access bycommerce application 212A, such as when user 233 next uses computingdevice 231 to access commerce application 212A). Thus, despite nothaving previously set up an account with commerce application 212A, user233 can enjoy the same benefits as other account holders and then lateraccess the contents of the temporary cart with the user's socialnetworking system profile information, and at that time, create apermanent account with the commerce application 212A.

Additionally or alternatively, control 246 can include a plurality ofcontrols corresponding to product 241A. To illustrate, control 246 caninclude a control for each of commerce applications 212A-212C throughwhich product 241A is available and/or for which user 233 has a useraccount. Accordingly, user 233 can choose to add product 241A to ashopping cart associated with any of commerce applications 212A-212C.

In yet further embodiments, product 241A may be available for purchasedirectly through networking application 202. In such embodiments,control 246 can be a user-interface control that, when selected,initiates a purchase of product 241A through networking application 202.

If product 241A is available directly through networking application 202and through one or more of commerce applications 212A-212C, control 246can include any number of corresponding user-interface controls. Forexample, control 246 can include a user-interface control for purchasingproduct 241A through networking application 202, a user-interfacecontrol for adding product 241A to a shopping cart associated with afirst third-party merchant (e.g., commerce application 212A), and auser-interface control for adding product 241A to a shopping cartassociated with a second third-party merchant (e.g., commerceapplication 212B). The provision of such user-interface controls may bebased on whether user 233 has a user account with networking application202 and/or each of commerce applications 212A-212C.

As mentioned above, news feed generator 208 can include product 241A incommunication 244 in response to the actions of other users. Forexample, during operation of social network system 203, news feedgenerator 208 can send a communication 242 to computing device 221. Asdepicted, communication 242 includes information regarding product 241A.User networking application 222 can present communication 242, includinginformation for product 241A, in a user interface at computing device221. As such, user 223 can interact with product 241A as presentedthrough the user interface. Data representative of a user action 245 byuser 223 can be sent back to networking application 202 from computingdevice 221. In some embodiments, user action 245 represents a selectionby user 223 of a user-interface control (e.g., a “like” icon) toindicate interest in product 241A. In response to selection of theuser-interface control, user networking application 222 can notifynetworking application 202 of user action 245.

In other embodiments, user action 245 may include a communication (e.g.,a post) including a tag 243 of product 241A within the communication.User 223 can include tag 243 in the communication in any suitablemanner. For example, user 223 can type a name for product 241A withinthe communication and social graph module 204 can, automatically or uponprompting by the user, insert a tag 243 to product 241A within thecommunication. In some embodiments, as user 223 begins typing a name forproduct 241A, social graph module 204 may present user 223 with one ormore products matching what user 223 has typed. Each of the listedproducts may be represented by a node within social networking system203. Thereafter, user 223 may select product 241A from the list of theone or more products, and social graph module 204 can include tag 243 inthe communication in response to the selection by user 223.

Social graph module 204 can process user action 245 and identify otherusers of social networking system 203 that may be interested in product241A based on user action 245 associated with product 241A. For example,social graph module 204 can determine that user 233 may be interested inproduct 241A because user 223 “liked” product 241A, and user 233 anduser 223 are connected within social networking system 203. Therefore,because user 233 and user 223 are connected within social networkingsystem 203, the news feed generator 208 can include informationregarding product 241A within communication 244 in response to user 223having “liked” product 241A.

It may be that user 233 is interested in buying product 241A. As such,user 233 can select 253 control 246 within communication 244. Inresponse to a selection of control 246, user networking application 232can notify networking application 202 of the user selection. Forexample, user networking application 222 can send selection 247 tonetworking application 202 to indicate that control 246 was selected atcomputing device 231.

As shown in FIG. 3, method 300 includes sending, subsequent to aselection of the selectable option by the user, a request to add theproduct to the shopping cart associated with the third-party merchant(304). For example, and referring again to FIG. 2, data 251 can be sentto commerce application 212A. Data 251 can request that product 241A beadded to a user 233's shopping cart.

In some embodiments, data 251 is sent in response to selection ofcontrol 246. For example, 3rd party merchant module 209 can send request249, containing data 251, to commerce application 212A in response toreceiving selection 247. In other embodiments, data 251 is kept atsocial networking system 203 until requested. For example, commerceapplication 212A can issue an API call 248 to networking application202. In response to API call 248, 3rd party merchant module 209 can sendrequest 249, containing data 251, to commerce application 212A.

Alternately, data 251 can be sent to commerce application 212A by way ofa different computing device (e.g., a personal computer). For example,3rd party merchant module 209 can send data 251 to computing device 261for storage in response to receiving selection 247. Computing device 261can receive data 251 and store data 251 as a cookie 263 in storage 262.Commerce application 212A can later access data 251 from computingdevice 261 to add product 241A to user 233's cart. To illustrate, user233 may utilize computing device 231 to request that product 241A beadded to user 233's shopping cart on commerce application 212A.Networking application 202 may then use a separate computing device 261associated with user 233 to store cookie 263 for later retrieval bycommerce application 212A (e.g., when user 233 uses computing device 261to access commerce application 212A). Subsequently, at a time of theirchoosing, user 233 can access their shopping cart at commerceapplication 212A and complete the purchase of product 241A.Alternatively, the networking application 202 may store cookie 263 onthe same computing device as was used to send the request. For example,user 233 can send a request to add product 241A to user 233's cart oncommerce application 212A using computing device 231. A cookie can bestored on computing device 231 in response to user 233 sending therequest. Subsequently, at a time of user 233's choosing, user 233 canaccess user 233's shopping cart at commerce application 212A at whichtime the information stored in the cookie is passed to commerceapplication 212A, and user 233 is provided an opportunity to completethe purchase of the product.

FIG. 4 illustrates a schematic diagram illustrating a system 400 inaccordance with an embodiment of the present invention. System 400illustrates another example embodiment of system 100. In particular,FIG. 4 illustrates networking application 402 and various commerceapplications 412A-412C. As depicted in FIG. 2, computing device users(e.g., 423 and 433) can use user networking applications (e.g., 422 and432 respectively) at computing devices (e.g., 421 and 431 respectively)to access networking application 402. Computing device 431 can also usecommerce application 434 (e.g., a special purpose “app”) associated withcommerce application 412A. In embodiments where networking application402 and/or commerce application 412A is a web application, usernetworking applications 422 and 432 can be web browsers or other usercommerce applications.

System 400 includes a set of one or more server computing devices 401that provide networking application 402 including news feed generator408 and third-party merchant module 409. In one or more embodiments ofthe invention, networking application 402 comprises a social networkingsystem 403 (such as but not limited to FACEBOOK (™)), but in otherembodiments the networking application 402 may comprise another type ofapplication, including but not limited to an e-mail application, searchengine application, banking application, or any number of otherapplication types that utilize user accounts.

In one or more embodiments where the networking application 402comprises a social networking system 403, the networking application 402may include a social graph module 404 for representing and analyzing aplurality of users, products, and other concepts. A node storage module406 of the social graph module 404 can store node information comprisingnodes for users, nodes for products, nodes for concepts, etc. An edgestorage module 407 of the social graph module 404 can store edgeinformation regarding relationships between nodes and/or actionsoccurring within the social networking system 403. Further detailregarding social-networking systems, social graphs, edges, and nodes ispresented below with respect to FIG. 15.

In such embodiments where networking application 402 is a webapplication, the backend providing data and logic for networkingapplication 402 may include a web application server (including but notlimited to the Apache HTTP Server by the Apache Software Foundation,Internet Information Services (IIS) by Microsoft Corporation, nginx byNGINX, Inc., the open-source lighttpd web server, and Google Web Server(GWS) by Google Inc.) and optionally a relational or non-relationaldatabase (including but not limited to MySQL by Oracle Corporation,PostgreSQL by the PostgreSQL Global Development Group, Apache Cassandraby the Apache Software Foundation, HBase by the Apache SoftwareFoundation, and MongoDB by 10 gen) for storing social graph data.

System 400 also includes a set of one or more server computing devices411 that provide a plurality of commerce applications, includingcommerce applications 412A-412C. Each commerce application 412A-412C cancorrespond to one or more third party merchants that offer products forsale through electronic commerce avenues. Each commerce application canalso include one or more of a checkout module, a cart module, a productdatabase, and a user database. For example, commerce application 412Aincludes checkout module 413, cart module 414, product database 417, anduser database 418.

Generally, checkout module 413 interoperates with a payment network tosettle transactions for purchased products. Cart module 414 isconfigured to accumulate and maintain status for one or more products auser has (at least initially) indicated some level of interest inpurchasing. Checkout module 413 can be used to settle transactions forproducts placed in a user's cart by cart module 414. Product database417 stores product data for any products offered for sale by third-partymerchants through commerce application 412A. User database 418 storesuser specific information (e.g., login, password, address, payment,etc.) for users of commerce application 412A.

In such embodiments where the commerce application 412A is a webapplication, the backend providing data and logic for commerceapplication 412A may include a web application server (including but notlimited to the Apache HTTP Server by the Apache Software Foundation,Internet Information Services (IIS) by Microsoft Corporation, nginx byNGINX, Inc., the open-source lighttpd web server, and Google Web Server(GWS) by Google Inc.) and optionally a relational or non-relationaldatabase (including but not limited to MySQL by Oracle Corporation,PostgreSQL by the PostgreSQL Global Development Group, Apache Cassandraby the Apache Software Foundation, HBase by the Apache SoftwareFoundation, and MongoDB by 10 gen) for storing product database 417 anduser database 418.

From time to time, server computing device(s) can send product data 441to networking application 402. Product data 441 can include data forproducts, such as, product 441A, being offered for sale by third-partymerchants through one or more of commerce applications 412A-412C. Socialgraph module 404 can process product data 441 to create product nodesfor products included in product data 441. Product nodes can be storedby node storage module 406. Social graph module 404 can also createedges between product nodes and other nodes in a social network graph.Edges for product nodes and other nodes can be stored by edge storagemodule 407.

FIG. 5 illustrates a flowchart of an example method 500 in accordancewith an embodiment of the present invention. Method 500 will bedescribed with respect to the components and data of system 400.

Method 500 includes receiving a communication associated with a socialnetworking system, the communication including information regarding aproduct available through a third-party merchant, the product beingassociated with a product node within the social networking system(501). For example, and referring again to FIG. 4, computing device 431can receive communication 444 from news feed generator 408.Communication 444 can be sent to computing device 431 and can includeinformation regarding product 441A based on a predicted interest of user433 in product 441A.

Alternately to user 433's interest in product 441A, product 441A can beincluded in communication 444 in response to one or more actions ofother users (e.g., a friend of user 433 or a third-party merchant). Forexample, during operation of social network system 403, news feedgenerator 408 can send communication 442 to computer device 421associated with user 423. As depicted, communication 442 includesinformation for product 441A (e.g., within a post). User networkingapplication 422 can present communication 442, including information forproduct 441A, in a user interface at computing device 421. As such, user423 can interact with product 441A as presented through the userinterface. In some embodiments, user 423 selects a user-interfacecontrol (e.g., a “like” icon) to indicate an interest in product 441A.In response to selection of the user-interface control, user networkingapplication 422 can notify networking application 402 of user action445. For example, user networking application 422 can send an indicationof user action 445 (e.g., the indication of interest of user 423 inproduct 441A) back to user networking application 402. Alternatively,user action 445 can include a new communication (e.g., post) and tagproduct 441A within the communication. For example, user 423 can type aname for product 441A within the communication and social graph module404 can insert a tag 443 to product 441A within the communication. Insome embodiments, as user 423 begins typing a name for product 441A,social graph module 404 may present user 423 with one or more productsmatching what user 423 has typed. Each of the listed one or moreproducts may be represented by a product node within node storage module406. Thereafter, user 423 may select product 441A from the list of oneor more products and social graph module 404 can include a tag in thecommunication in response to the selection by user 423.

Social graph module 404 can process user action 445 and identify otherusers of social networking system 403 that may be interested in product441A based on user action 445. For example, social graph module 404 candetermine that user 433 may be interested in product 441A because user423 and user 433 are friends within social networking system 403 and/orbecause user 423 and user 433 share similar interest profiles.Additionally or alternatively, social graph module 404 may determinethat user 433 may be interested in product 441A because product 441A hasone or more similarities (e.g., brand similarities, product typesimilarities, industry similarities, product demographic similarities)with one or more products that user 433 has expressed interest in (e.g.,“liked”) previously. In response, news feed generator 408 can sendcommunication 444 to computing device 431 including informationregarding product 441A.

As depicted, communication 444 includes information for product 441A anda control 446 (e.g., a cart control). Product 441A can be associatedwith a product node in a social networking graph maintained by socialgraph module 404. Control 446 can be a user-interface control, such as,for example, an “Add To Cart” button that, when selected, adds product441A to user 433's cart within commerce application 412A. Product 441Acan be added to user 433's cart automatically and without further userintervention. Advantageously, user 433 maintains focus on thecommunication 444 while being able to add product 441A to their cart oncommerce application 412A.

As shown in FIG. 5, method 500 further includes presenting, using atleast one processor, to a user of the social networking system, theinformation regarding the product along with a selectable option to addthe product to a shopping cart associated with the third-party merchant(502). For example, and referring again to FIG. 4, user networkingapplication 432 can present product 441A along with control 446 in auser-interface at computing device 431. It may be that user 433 isinterested in buying product 441A. As such, user 433 can select 453control 446 from news feed 444.

As shown in FIG. 5, method 500 includes sending, subsequent to aselection of the selectable option by the user, a request to add theproduct to the shopping cart associated with the third-party merchant toan application associated with the third-party merchant. For example,subsequent to selection of cart control 446, computing device 431 canformulate data 451. Data 451 can operate to request that product 441A beadded to a user 433's shopping cart.

In some embodiments, data 451 is sent to user commerce application 434in response to selection of control 446. For example, user networkingapplication 432 can send request 449, containing data 451, to usercommerce application 434 in response to receiving the selection ofcontrol 446. In other embodiments, user networking application 432formulates data 451 but holds data 451 until requested. User commerceapplication 434 can issue a call 448 to user networking application 432to request data 451. In response to call 448, user networkingapplication 432 can send data 451 to user commerce application 434.

In other embodiments, data 451 is stored in more durable storage atcomputing device 431. For example, data 451 can be stored in a cookie463. User commerce application 434 can subsequently access cookie 463 toobtain data 451.

User commerce application 434 can then send data 451 to commerceapplication 412A to cause product 441A to be added to user 433's cart.Subsequently, at a time of their choosing, user 433 can access theirshopping cart at commerce application 412A and complete the purchase ofproduct 441A.

Other embodiments related to purchasing a product are also within thescope of the presented invention. In one or more embodiments, a productis purchased directly from a social networking news feed. Purchasedirectly from a social networking news feed relieves a user form havingto subsequently access their cart to complete a purchase. Furtherdescription related to direct product purchases is included below.

FIG. 6 illustrates a schematic diagram regarding relationships within asocial networking system. Traditionally, social networking systemsmaintain and manage relationships between multiple users of the socialnetworking system, as shown at 602. However, in accordance withembodiments of the present invention, a social networking system canadditionally maintain and manage relationships between users of thesocial networking system and products represented by nodes within thesocial networking system, as shown at 604.

FIG. 7 illustrates a schematic diagram of an example product node 700.As shown, product node 700 can include various types of informationregarding a particular product. For example, information maintainedwithin product node 700 can include a product description, amanufacturer of the product, a list of users that have reviewed orrecommended the product, a list of users who own the product,information regarding how/where to buy the product, and a list of usersthat want the product.

FIG. 8 illustrates an example of presenting data from a product node. Asshown, FIG. 8 includes an example graphical user interface 800 (orsimply “GUI 800”) including a product page representative of a productnode within a social networking system. GUI 800, and the correspondingproduct node, may be provided and/or managed by one or more componentsof systems 100, 200, and/or 400 described in detail above (e.g., bynetworking application 101, social networking system 203, or socialnetworking system 403).

GUI 800 illustrates an example page of information associated with aparticular product (e.g., an iPad 2). GUI 800 includes a variety ofinformation and options associated with the represented product. Forexample, the information included in GUI 800 includes a product name, aproduct category, a product manufacturer, a product description, one ormore product images, a list of users (e.g., friends) that “want” theproduct, a list of users that recommend the product, a list of merchantsthat provide, etc. In addition, GUI 800 includes a plurality ofselectable options including an option to indicate that the user “wants”the product, an option to indicate that the user “recommends” theproduct, an option to “like” the product, options associated withmerchants through which the user can purchase the product, etc. Further,GUI 800 includes a selectable option 802 for a user to “Create a ProductPage.” Option 802 may be used by a user to create a new product pageand, as a result, a new product node within the social networkingsystem. Accordingly, a user (e.g., a merchant) can create a new productnode and product page to represent a product (e.g., a product that amerchant wishes to provide by way of the social networking system). Theuser can subsequently provide any product information to associate withthe product page/node. Furthermore, the user can enable one or moreoptions for other users to purchase the product. The enabled options mayfurther include an option to add the product to a shopping cartassociated with a third-party merchant (e.g., for a separate ecommercewebsite associated with the third-party merchant).

In addition, in response to a user's interactions with the informationand/or options included in GUI 800, a corresponding social networkingsystem can make other users of the social networking system aware of theuser's actions. For example, if the user “likes” the product, the socialnetworking system can make “friends” of the user aware of this useraction. To illustrate, the social networking system can includeinformation regarding the user action in news feeds of the other users.

As mentioned above, in one or more embodiments of the present invention,a user can “tag” a product within a social networking communication.FIGS. 9A-9B illustrate an example composition of a social networkingcommunication. In particular, FIGS. 9A-9B illustrate various views of agraphical user interface 900 for composing a communication including atag associated with a product (e.g., the product represented in FIG. 8).

FIG. 9A illustrates a first view of a graphical user interface (orsimply “GUI 900”) provided to facilitate composition of a communication(e.g., a post) by a user 902. GUI 900 includes a composition area 904,within which user 902 can compose a communication 908 using keyboard906. As shown, user 902 has composed a portion of communication 908 byinputting text. As user 902 inputs the text, GUI 900 may be populated(e.g., automatically or in response to a request by user 902) with alisting of products 910 matching at least a portion of text ofcommunication 908. As user 902 continues to input text, the listing ofproducts 910 is continually updated to reflect products matching theinputted text. To illustrate, based on the inputted text “iP,” listingof products 910 is populated with a plurality of products having namesincluding or beginning with “iP” (e.g., “iPad 2,” “iPhone 4s,” and “iPodShuffle”). At any point, user 902 can select a product from listing ofproducts 910 to tag the selected product within the communication.

For example, and as shown in FIG. 9B, in response to a selection of aproduct from listing of products 910, a tag 912 corresponding to theselected product may be inserted into the communication 908. Inaddition, listing of products 910 is removed from composition area 904until such time as user 902 requests or begins to input additional text.

In some embodiments, tag 912 can function as a reference to a productnode associated with the selected product. For example, tag 912 may linkto a product page (e.g., the product page shown in FIG. 8) representingthe selected product and a corresponding product node within a socialnetworking system. In additional embodiments, user 902 can use GUI 900to include any number of additional tags associated with additionalproducts in the communication 908. Once user 902 has completed thecommunication 908, user 902 can select option 914 to “post” thecommunication 908 (e.g., to post the message to a user profileassociated with user 902). Thereafter, the social networking system candistribute the communication 908 and the included tag 912 to one or moreadditional users of the social networking system.

To illustrate, FIG. 10A shows an example mobile graphical user interface1000 (or “GUI 1000”) including a news feed for another user of thesocial networking system (e.g., a “friend” of user 902). As shown, thenews feed includes a post 1002 based on the communication 908 composedby user 902. In particular, post 1002 includes the text of communication908 and tag 912. Post 1002 can further include a plurality of genericoptions 1004 for interacting with post 1002 (e.g., to “like,” share, orcomment on post 1002). In addition, and as shown in FIG. 10A, post 1002can be automatically populated with a variety of information and optionsassociated with the product represented by tag 912. For example, thesocial networking system can access a product node associated with tag912 to obtain a name for the product, a description of the product, oneor more images associated with the product, and/or any other suitableinformation associated with the product.

In some embodiments, post 1002 can be automatically populated with oneor more options (e.g., user-interface controls) for purchasing theproduct represented by tag 912. For example, post 1002 includes a firstadd-to-cart option 1006A associated with a first third-party merchant(i.e., Apple (™)) and a second add-to-cart option 1006B associated witha second third-party merchant (i.e., Amazon (™)). Enablement ofadd-to-cart options 1006A-1006B within post 1002 can be based on adetermination (e.g., by the social networking system) that the user hasaccounts with each of the represented third-party merchants. Forexample, social networking system 203 can communicate with thethird-party merchants to verify whether the user has accounts with thethird-party merchants. To illustrate, social networking system 202 cansend an account verification request to the third-party merchantsincluding identification or login information for the user. This accountverification process can be streamlined if the user has previouslyutilized social networking system 202 to log into and/or create anaccount with one or more of the third-party merchants. As a result,social networking system 202 already has a record of the third-partymerchants with which the user has accounts. In addition, enablement ofadd-to-cart options 1006A-1006B may be further based an availability ofthe product at the corresponding merchants. For example, the socialnetworking system can receive product availability information from themerchants during setup (e.g., when the merchant initiates sale of theproducts through the social networking system), through periodic updatesreceived from the merchants, and/or in real-time in response to requestsfrom the social networking system (e.g., the social networking systemmay send a request to the merchant for updated product availabilityinformation in response to the user accessing or experiencing post1002). Add-to-cart options 1006A-1006B represent examples of controls246 and 446 as shown in FIGS. 2 and 4, respectively, and discussed inmore detail above.

The user of GUI 1000 can use either of add-to-cart options 1006A-1006Bto add the product to a corresponding shopping cart without shiftingfocus away from GUI 1000. For example, in response to a selection of thefirst add-to-cart option 1006A, a request to add the product to theuser's shopping cart can be sent to the corresponding third-partymerchant as illustrated in FIGS. 1-5 and as discussed in detail above.

In an additional or alternative embodiment, a “purchase” option can beincluded in post 1002 to allow the user to purchase the product directlythrough the social networking system.

In some embodiments, in response to a selection of one of add-to-cartoptions 1006A-1006B, the user can be provided with a number of differentoptions associated with the product. Such embodiments are particularlyuseful if various options associated with the product are available. Toillustrate, FIG. 10B shows an options interface 1008 included within GUI1000 in response to a selection of one of add-to-cart options1006A-1006B. Using options interface 1008, the user can select one ormore options for the product being added to the user's shopping cart.For example, using options interface 1008, the user can specify any oneor more of the following for the product: a size, a color, a design, afunctionality, a price, etc. After selecting the desired options, theuser can select the “submit” option to submit the request to add theproduct to the user's shopping cart for the third-party merchant.Alternatively, the user can select the “cancel” option 1012 to cancelthe request.

FIG. 11 illustrates a flowchart of an example method 1100 in accordancewith an embodiment of the present invention. Method 1100 can beimplemented by system 100, system 200, and/or system 400. Method 1100can allow a user of a social networking system to purchase a productdirectly from the social networking system. Accordingly, a user of thesocial networking system can purchase the product without beingredirected to a third-party merchant.

Method 1100 includes associating, using at least one processor,information regarding a product with a product node within a socialnetworking system (1101). For example, networking application 101 (asshown in FIG. 1) can associate any suitable product information with aproduct node within a social networking system, such as describedherein. The product represented by the product node may be available forpurchase directly from the social networking system. For example, thesocial networking system can perform one or more actions to initiate thetransaction, manage the checkout, handle payment processing andsettlement, and/or fulfill the purchase.

Method 1100 further includes providing a communication, includinginformation regarding the product, to a user of the social networkingsystem (1102). The communication can be provided in any suitable manner,such as described herein. For example, the communication can include asocial network post or advertisement within a social networking newsfeed. To illustrate, FIG. 12 includes a social networking graphical userinterface 1200 (or “GUI 1200”). GUI 1200 includes a variety ofinformation and options associated with one or more social networkingfeatures.

As shown, GUI 1200 includes a news feed 1202 including a plurality ofposts relevant to a user 1204 of a social networking system. As shown,news feed 1202 includes a post 1206 associated with a product 1208available for purchase through the social networking system. Post 1206includes a variety of information and a plurality of options associatedwith product 1208. For example, post 1206 includes information regardinga provider/manufacturer of product 1208, a name of product 1208, adescription of product 1208, and a website associated with product 1208.In addition, post 1206 includes a plurality of options including anoption to “like” a page associated with product 1208, an option to“like” post 1206, an option to share post 1206, and an option to commenton post 1206.

Referring again to FIG. 11, method 1100 includes providing, inconjunction with the provided communication, a selectable option topurchase the product from the social networking system (1104). Forexample, and as shown in FIGS. 13A-13D, a social networking system canprovide an expanded graphical user interface 1300 (or “GUI 1300”)including additional information and options associated with product1208. GUI 1300 can include a window opened within and/or at leastpartially overlapping GUI 1200.

As shown in FIG. 13A, GUI 1300 includes a variety of content andinformation associated with product 1208, including a plurality ofimages of product 1208, an item description for product 1208, a pricefor product 1208, comments for product 1208, etc. Furthermore, GUI 1300includes an option to “like” product 1208, an option to comment onproduct 1208, an option to share product 1208, etc. In addition, adropdown for specifying which type of product 1208 the user wishes tobuy, and a “purchase” option 1304 to initiate a purchase of product1208. Additionally or alternatively, GUI 1300 can include a firstselectable tab 1306 for accessing an item description associated withproduct 1208 and a second selectable tab 1308 for accessing commentsassociated with product 1208. For example, and as shown in FIG. 13B, inresponse to a user selection of second selectable tab 1308, the commentsassociated with product 1208 are shown within GUI 1300.

As shown in FIG. 13C, in response to a user selection of dropdown 1302,dropdown 1302 is opened to reveal a listing 1310 of available optionsfor product 1208. For example, listing 1310 includes options regardingsizes and styles for product 1208. Once the user selects an availableoption from listing 1310, listing 1310 can be closed, and dropdown 1302can reveal the selected option (i.e., “Business Lucid—Small”), as shownin FIG. 13D.

Referring again to FIG. 11, method 1100 includes initiating, in responseto a selection of the selectable option by the user, a purchase of theproduct by the user (1106). To illustrate, and as shown in FIG. 13D,user can select option 1304 to initiate the purchase of product 1208.

Additionally or alternatively, social networking system can provide oneor more user interfaces and corresponding options to complete a checkoutprocess (e.g., to identify shipping and payment information for thepurchase) and finalize the purchase.

Embodiments of the present invention may comprise or utilize a specialpurpose or general-purpose computer including computer hardware, suchas, for example, one or more processors and system memory, as discussedin greater detail below. Embodiments within the scope of the presentinvention also include physical and other computer-readable media forcarrying or storing computer-executable instructions and/or datastructures. In certain particular, one or more of the processesdescribed herein may be implemented at least in part as instructionsembodied in a non-transitory computer-readable medium and executable byone or more computing devices (e.g., any of the media content accessdevices described herein). In general, a processor (e.g., amicroprocessor) receives instructions, from a non-transitorycomputer-readable medium, (e.g., a memory, etc.), and executes thoseinstructions, thereby performing one or more processes, including one ormore of the processes described herein.

Computer-readable media can be any available media that can be accessedby a general purpose or special purpose computer system.Computer-readable media that store computer-executable instructions arenon-transitory computer-readable storage media (devices).Computer-readable media that carry computer-executable instructions aretransmission media. Thus, by way of example, and not limitation,embodiments of the invention can comprise at least two distinctlydifferent kinds of computer-readable media: non-transitorycomputer-readable storage media (devices) and transmission media.

Non-transitory computer-readable storage media (devices) includes RAM,ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM),Flash memory, phase-change memory (“PCM”), other types of memory, otheroptical disk storage, magnetic disk storage or other magnetic storagedevices, or any other medium which can be used to store desired programcode means in the form of computer-executable instructions or datastructures and which can be accessed by a general purpose or specialpurpose computer.

A “network” is defined as one or more data links that enable thetransport of electronic data between computer systems and/or modulesand/or other electronic devices. When information is transferred orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as a transmissionmedium. Transmissions media can include a network and/or data linkswhich can be used to carry desired program code means in the form ofcomputer-executable instructions or data structures and which can beaccessed by a general purpose or special purpose computer. Combinationsof the above should also be included within the scope ofcomputer-readable media.

Further, upon reaching various computer system components, program codemeans in the form of computer-executable instructions or data structurescan be transferred automatically from transmission media tonon-transitory computer-readable storage media (devices) (or viceversa). For example, computer-executable instructions or data structuresreceived over a network or data link can be buffered in RAM within anetwork interface module (e.g., a “NIC”), and then eventuallytransferred to computer system RAM and/or to less volatile computerstorage media (devices) at a computer system. Thus, it should beunderstood that non-transitory computer-readable storage media (devices)can be included in computer system components that also (or evenprimarily) utilize transmission media.

Computer-executable instructions comprise, for example, instructions anddata which, when executed at a processor, cause a general purposecomputer, special purpose computer, or special purpose processing deviceto perform a certain function or group of functions. In someembodiments, computer-executable instructions are executed on a generalpurpose computer to turn the general purpose computer into a specialpurpose computer implementing elements of the invention. The computerexecutable instructions may be, for example, binaries, intermediateformat instructions such as assembly language, or even source code.Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the described features or acts described above.Rather, the described features and acts are disclosed as example formsof implementing the claims.

Those skilled in the art will appreciate that the invention may bepracticed in network computing environments with many types of computersystem configurations, including, personal computers, desktop computers,laptop computers, message processors, hand-held devices, multi-processorsystems, microprocessor-based or programmable consumer electronics,network PCs, minicomputers, mainframe computers, mobile telephones,PDAs, tablets, pagers, routers, switches, and the like. The inventionmay also be practiced in distributed system environments where local andremote computer systems, which are linked (either by hardwired datalinks, wireless data links, or by a combination of hardwired andwireless data links) through a network, both perform tasks. In adistributed system environment, program modules may be located in bothlocal and remote memory storage devices

Embodiments of the invention can also be implemented in cloud computingenvironments. In this description and the following claims, “cloudcomputing” is defined as a model for enabling on-demand network accessto a shared pool of configurable computing resources. For example, cloudcomputing can be employed in the marketplace to offer ubiquitous andconvenient on-demand access to the shared pool of configurable computingresources. The shared pool of configurable computing resources can berapidly provisioned via virtualization and released with low managementeffort or service provider interaction, and then scaled accordingly.

A cloud computing model can be composed of various characteristics suchas, for example, on-demand self-service, broad network access, resourcepooling, rapid elasticity, measured service, and so forth. A cloudcomputing model can also expose various service models, such as, forexample, Software as a Service (“SaaS”), Platform as a Service (“PaaS”),and Infrastructure as a Service (“IaaS”). A cloud computing model canalso be deployed using different deployment models such as privatecloud, community cloud, public cloud, hybrid cloud, and so forth. Inthis description and in the claims, a “cloud computing environment” isan environment in which cloud computing is employed.

FIG. 14 illustrates, in block diagram form, an exemplary computingdevice 1400 that may be configured to perform one or more of theprocesses described above. One will appreciate that the describedcomputing devices can each comprise implementations of thedata-computing device 1400. As shown by FIG. 14, the computing devicecan comprise a processor 1402, memory 1404, a storage device 1406, anI/O interface 1408, and a communication interface 1410. While anexemplary computing device 1400 is shown in FIG. 14, the componentsillustrated in FIG. 14 are not intended to be limiting. Additional oralternative components may be used in other embodiments. Furthermore, incertain embodiments, a computing device 1400 can include fewercomponents than those shown in FIG. 14. Components of computing device1400 shown in FIG. 14 will now be described in additional detail.

In particular embodiments, processor(s) 1402 includes hardware forexecuting instructions, such as those making up a computer program. Asan example and not by way of limitation, to execute instructions,processor(s) 1402 may retrieve (or fetch) the instructions from aninternal register, an internal cache, memory 1404, or a storage device1406 and decode and execute them. In particular embodiments,processor(s) 1402 may include one or more internal caches for data,instructions, or addresses. As an example and not by way of limitation,processor(s) 1402 may include one or more instruction caches, one ormore data caches, and one or more translation lookaside buffers (TLBs).Instructions in the instruction caches may be copies of instructions inmemory 1404 or storage 1406.

The computing device 1400 includes memory 1404, which is coupled to theprocessor(s) 1402. The memory 1404 may be used for storing data,metadata, and programs for execution by the processor(s). The memory1404 may include one or more of volatile and non-volatile memories, suchas Random Access Memory (“RAM”), Read Only Memory (“ROM”), a solid statedisk (“SSD”), Flash, Phase Change Memory (“PCM”), or other types of datastorage. The memory 1404 may be internal or distributed memory.

The computing device 1400 includes a storage device 1406 includesstorage for storing data or instructions. As an example and not by wayof limitation, storage device 1406 can comprise a non-transitory storagemedium described above. The storage device 1406 may include a hard diskdrive (HDD), a floppy disk drive, flash memory, an optical disc, amagneto-optical disc, magnetic tape, or a Universal Serial Bus (USB)drive or a combination of two or more of these. Storage device 1406 mayinclude removable or non-removable (or fixed) media, where appropriate.Storage device 1406 may be internal or external to the computing device1400. In particular embodiments, storage device 1406 is non-volatile,solid-state memory. In particular embodiments, Storage device 1406includes read-only memory (ROM). Where appropriate, this ROM may be maskprogrammed ROM, programmable ROM (PROM), erasable PROM (EPROM),electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM),or flash memory or a combination of two or more of these.

The computing device 1400 also includes one or more input or output(“I/O”) devices/interfaces 1408, which are provided to allow a user toprovide input to, receive output from, and otherwise transfer data toand from the computing device 1400. These I/O devices/interfaces 1408may include a mouse, keypad or a keyboard, a touch screen, camera,optical scanner, network interface, modem, other known I/O devices or acombination of such I/O devices/interfaces 1408. The touch screen may beactivated with a stylus or a finger.

The I/O devices/interfaces 1408 may include one or more devices forpresenting output to a user, including, but not limited to, a graphicsengine, a display (e.g., a display screen), one or more output drivers(e.g., display drivers), one or more audio speakers, and one or moreaudio drivers. In certain embodiments, devices/interfaces 1408 isconfigured to provide graphical data to a display for presentation to auser. The graphical data may be representative of one or more graphicaluser interfaces and/or any other graphical content as may serve aparticular implementation.

The computing device 1400 can further include a communication interface1410. The communication interface 1410 can include hardware, software,or both. The communication interface 1410 can provide one or moreinterfaces for communication (such as, for example, packet-basedcommunication) between the computing device and one or more othercomputing devices 1400 or one or more networks. As an example and not byway of limitation, communication interface 1410 may include a networkinterface controller (NIC) or network adapter for communicating with anEthernet or other wire-based network or a wireless NIC (WNIC) orwireless adapter for communicating with a wireless network, such as aWI-FI.

This disclosure contemplates any suitable network and any suitablecommunication interface 1410. As an example and not by way oflimitation, computing device 1400 may communicate with an ad hocnetwork, a personal area network (PAN), a local area network (LAN), awide area network (WAN), a metropolitan area network (MAN), or one ormore portions of the Internet or a combination of two or more of these.One or more portions of one or more of these networks may be wired orwireless. As an example, computing system 1400 may communicate with awireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FInetwork, a WI-MAX network, a cellular telephone network (such as, forexample, a Global System for Mobile Communications (GSM) network), orother suitable wireless network or a combination thereof. Computingdevice 1400 may include any suitable communication interface 1410 forany of these networks, where appropriate.

The computing device 1400 can further include a bus 1412. The bus 1412can comprise hardware, software, or both that couples components ofcomputing device 1400 to each other. As an example and not by way oflimitation, bus 1412 may include an Accelerated Graphics Port (AGP) orother graphics bus, an Enhanced Industry Standard Architecture (EISA)bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, anIndustry Standard Architecture (ISA) bus, an INFINIBAND interconnect, alow-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture(MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express(PCIe) bus, a serial advanced technology attachment (SATA) bus, a VideoElectronics Standards Association local (VLB) bus, or another suitablebus or a combination thereof.

As mentioned above, embodiments of the present invention may beimplemented by a social networking system. A social-networking systemmay enable its users (such as persons or organizations) to interact withthe system and with each other. The social-networking system may, withinput from a user, create and store in the social-networking system auser profile associated with the user. The user profile may includedemographic information, communication-channel information, andinformation on personal interests of the user. The social-networkingsystem may also, with input from a user, create and store a record ofrelationships of the user with other users of the social-networkingsystem, as well as provide services (e.g. wall posts, photo-sharing,event organization, messaging, games, or advertisements) to facilitatesocial interaction between or among users

The social-networking system may store records of users andrelationships between users in a social graph comprising a plurality ofnodes and a plurality of edges connecting the nodes. The nodes maycomprise a plurality of user nodes and a plurality of concept nodes. Auser node of the social graph may correspond to a user of thesocial-networking system. A user may be an individual (human user), anentity (e.g., an enterprise, business, or third party application), or agroup (e.g., of individuals or entities). A user node corresponding to auser may comprise information provided by the user and informationgathered by various systems, including the social-networking system.

For example, the user may provide his or her name, profile picture, cityof residence, contact information, birth date, gender, marital status,family status, employment, educational background, preferences,interests, and other demographic information to be included in the usernode. Each user node of the social graph may have a corresponding webpage (typically known as a profile page). In response to a requestincluding a user name, the social-networking system can access a usernode corresponding to the user name, and construct a profile pageincluding the name, a profile picture, and other information associatedwith the user. A profile page of a first user may display to a seconduser all or a portion of the first user's information based on one ormore privacy settings by the first user and the relationship between thefirst user and the second user.

A concept node may correspond to a concept of the social-networkingsystem. For example, a concept can represent a real-world entity, suchas a movie, a song, a sports team, a celebrity, a group, a restaurant,or a place or a location. An administrative user of a concept nodecorresponding to a concept may create or update the concept node byproviding information of the concept (e.g., by filling out an onlineform), causing the social-networking system to associate the informationwith the concept node. For example and without limitation, informationassociated with a concept can include a name or a title, one or moreimages (e.g., an image of cover page of a book), a web site (e.g., anURL address) or contact information (e.g., a phone number, an emailaddress). Each concept node of the social graph may correspond to a webpage. For example, in response to a request including a name, thesocial-networking system can access a concept node corresponding to thename, and construct a web page including the name and other informationassociated with the concept.

An edge between a pair of nodes may represent a relationship between thepair of nodes. For example, an edge between two user nodes can representa friendship between two users. For another example, thesocial-networking system may construct a web page (or a structureddocument) of a concept node (e.g., a restaurant, a celebrity),incorporating one or more selectable buttons (e.g., “like”, “check in”)in the web page. A user can access the page using a web browser hostedby the user's client device and select a selectable button, causing theclient device to transmit to the social-networking system a request tocreate an edge between a user node of the user and a concept node of theconcept, indicating a relationship between the user and the concept(e.g., the user checks in a restaurant, or the user “likes” acelebrity).

As an example, a user may provide (or change) his or her city ofresidence, causing the social-networking system to create an edgebetween a user node corresponding to the user and a concept nodecorresponding to the city declared by the user as his or her city ofresidence. In addition, the degree of separation between any two nodesis defined as the minimum number of hops required to traverse the socialgraph from one node to the other. A degree of separation between twonodes can be considered a measure of relatedness between the users orthe concepts represented by the two nodes in the social graph. Forexample, two users having user nodes that are directly connected by anedge (i.e., are first-degree nodes) may be described as “connectedusers” or “friends.” Similarly, two users having user nodes that areconnected only through another user node (i.e., are second-degree nodes)may be described as “friends of friends.”

A social-networking system may support a variety of applications, suchas photo sharing, on-line calendars and events, gaming, instantmessaging, and advertising. For example, the social-networking systemmay also include media sharing capabilities. Also, the social-networkingsystem may allow users to post photographs and other multimedia files toa user's profile page (typically known as “wall posts” or “timelineposts”) or in a photo album, both of which may be accessible to otherusers of the social-networking system depending upon the user'sconfigured privacy settings. The social-networking system may also allowusers to configure events. For example, a first user may configure anevent with attributes including time and date of the event, location ofthe event and other users invited to the event. The invited users mayreceive invitations to the event and respond (such as by accepting theinvitation or declining it). Furthermore, the social-networking systemmay allow users to maintain a personal calendar. Similarly to events,the calendar entries may include times, dates, locations and identitiesof other users.

FIG. 15 illustrates an example network environment of asocial-networking system. In particular embodiments, a social-networkingsystem 1500 may comprise one or more data stores. In particularembodiments, the social-networking system 1500 may store a social graphcomprising user nodes, concept nodes, and edges between nodes asdescribed earlier. Each user node may comprise one or more data objectscorresponding to information associated with or describing a user. Eachconcept node may comprise one or more data objects corresponding toinformation associated with a concept. Each edge between a pair of nodesmay comprise one or more data objects corresponding to informationassociated with a relationship between users (or between a user and aconcept, or between concepts) corresponding to the pair of nodes.

In particular embodiments, the social-networking system 1500 maycomprise one or more computing devices (e.g., servers) hostingfunctionality directed to operation of the social-networking system. Auser of the social-networking system 1500 may access thesocial-networking system 1500 using a client device such as clientdevice 1506. In particular embodiments, the client device 1506 caninteract with the social-networking system 1502 through a network 1504.

The client device 1506 may be a desktop computer, laptop computer,tablet computer, personal digital assistant (PDA), in- or out-of-carnavigation system, smart phone or other cellular or mobile phone, ormobile gaming device, other mobile device, or other suitable computingdevices. Client device 1506 may execute one or more client applications,such as a web browser (e.g., Microsoft Windows Internet Explorer,Mozilla Firefox, Apple Safari, Google Chrome, Opera, etc.) or a nativeor special-purpose client application (e.g., Facebook for iPhone oriPad, Facebook for Android, etc.), to access and view content over anetwork 1504.

Network 1504 may represent a network or collection of networks (such asthe Internet, a corporate intranet, a virtual private network (VPN), alocal area network (LAN), a wireless local area network (WLAN), acellular network, a wide area network (WAN), a metropolitan area network(MAN), or a combination of two or more such networks) over which clientdevices 1506 may access the social-networking system 1500.

While these methods, systems, and user interfaces utilize both publiclyavailable information as well as information provided by users of thesocial-networking system, all use of such information is to beexplicitly subject to all privacy settings of the involved users and theprivacy policy of the social-networking system as a whole.

In the foregoing specification, the invention has been described withreference to specific exemplary embodiments thereof. Various embodimentsand aspects of the invention(s) are described with reference to detailsdiscussed herein, and the accompanying drawings illustrate the variousembodiments. The description above and drawings are illustrative of theinvention and are not to be construed as limiting the invention.Numerous specific details are described to provide a thoroughunderstanding of various embodiments of the present invention.

The present invention may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. For example, the methods described herein may beperformed with less or more steps/acts or the steps/acts may beperformed in differing orders. Additionally, the steps/acts describedherein may be repeated or performed in parallel with one another or inparallel with different instances of the same or similar steps/acts. Thescope of the invention is, therefore, indicated by the appended claimsrather than by the foregoing description. All changes that come withinthe meaning and range of equivalency of the claims are to be embracedwithin their scope.

We claim:
 1. A method comprising: obtaining, by a social networkingsystem comprising at least one computing device, product data for aproduct available for purchase via the social networking system;creating, using the product data, a product node in a social graph ofthe social networking system, the social graph comprising a plurality ofnodes and a plurality of edges representing relationships between theplurality of nodes, wherein the plurality of edges comprises one or moreedges connecting the product node to one or more other nodes; inserting,by the social networking system, a tag of the product within acommunication in response to a user input to insert the tag from aclient device of a user composing the communication, the tag referencingthe product node in the social graph; obtaining, by the socialnetworking system, information about the product from the product node;based on the tag, and in response to the tag being inserted into thecommunication, modifying, by the social networking system, thecommunication to populate the communication with: the information aboutthe product from the product node; and a selectable option to initiate atransaction for the product; and providing, by the social networkingsystem, the communication with the information from the product node andthe selectable option to initiate the transaction for the product to auser of the social networking system.
 2. The method as recited in claim1, further comprising: receiving, from a computing device composing thecommunication, information indicating the product within thecommunication; accessing the product node based on the informationindicating the product within the communication; and providing, to thecomputing device composing the communication, at least a portion of theproduct data in the product node.
 3. The method as recited in claim 1,wherein providing the communication comprises providing thecommunication within a news feed associated with the user.
 4. The methodas recited in claim 1, further comprising: providing, to a client devicecomposing the communication, a listing of products matching at least aportion of text in the communication; and wherein inserting the tag ofthe product comprises receiving a selection of the product from thelisting of products matching at least a portion of text in thecommunication.
 5. The method as recited in claim 1, further comprising:receiving, from a computing device of the user of the social networkingsystem, an indication of a selection of the selectable option within thecommunication to initiate the transaction for the product; andinitiating a purchase of the product by initiating a checkout procedurefor the product.
 6. The method as recited in claim 5, wherein initiatingthe checkout procedure for the product comprises accessing, from a usernode in the social graph of the social networking system, at least oneof payment information and shipping information associated with theuser.
 7. The method as recited in claim 6, further comprisingfacilitating fulfillment of the purchase after the checkout procedure.8. The method as recited in claim 1, wherein providing the communicationcomprises providing the communication by way of a user interfacedisplayed by a computing device associated with the user.
 9. The methodas recited in claim 8, wherein the computing device associated with theuser comprises a mobile device.
 10. The method of claim 1, furthercomprising generating the communication based on a user actionassociated with another user of the social networking system.
 11. Themethod of claim 10, wherein the user action comprises a composition ofthe communication.
 12. The method of claim 10, wherein the user actioncomprises an indication that the other user of the social networkingsystem likes the product via the social networking system.
 13. Themethod of claim 10, wherein the other user is connected to the user byway of the social networking system.
 14. The method of claim 10, whereinthe other user is a third-party merchant associated with the product.15. The method of claim 1, further comprising providing, to the user inresponse to a selection to purchase the product, a listing of aplurality of options associated with the product.
 16. The method ofclaim 1, wherein inserting the tag of the product within thecommunication comprises: receiving an indication of the product within acommunication composed by a user of the social networking system;tagging, by the social networking system and based on the receivedindication of the product, the product within the communication byassociating the product node with the communication composed by theuser; and including the information from the product node in thecommunication based on the association between the product node and thecommunication according to the received tag for presentation to otherusers of the social networking system associated with the user thatcomposed the communication.
 17. A system comprising: one or more serverdevices storing instructions thereon that, when executed by at least oneprocessor, cause the system to: obtain, by a social networking system,product data representing product information for a product availablefor purchase via the social networking system; create, using the productdata, a product node in a social graph of the social networking system,the social graph comprising a plurality of nodes and a plurality ofedges representing relationships between the plurality of nodes, whereinthe plurality of edges comprise one or more edges connecting the productnode to one or more other nodes; receive, by the social networkingsystem, an indication of the product within a communication composed bya first user; tag, by the social network and based on the receivedindication of the product, the product within the communication byassociating the product node with the communication composed by thefirst user; obtain, by the social networking system, information aboutthe product from the product node; modify, by the social networkingsystem in response to the tag being inserted into the communication andbased on the association between the product node and the communicationaccording to the tag within the communication, the communication topopulate the communication for presentation to one or more users of thesocial networking system with: the information about the product fromthe product node; and a selectable option to initiate a transaction forthe product; and provide, by the social networking system, thecommunication including the information from the product node and theselectable option to initiate the transaction for the product to asecond user of the social networking system.
 18. The system as recitedin claim 17, wherein the instructions, when executed by the at least oneprocessor, further cause the system to: receive, from a computing devicecomposing the communication, text indicating the product within thecommunication; access the product node based on the text indicating theproduct within the communication; and provide, to the computing devicecomposing the communication, at least a portion of the product data inthe product node.
 19. The system as recited in claim 18, wherein theinstructions, when executed by the at least one processor, further causethe system to determine that the received text matches at least aportion of a name of the product in the product node.
 20. The system asrecited in claim 17, wherein the instructions, when executed by the atleast one processor, further cause the system to generate thecommunication based on a user action associated with another user of thesocial networking system.